package cn.tedu.yitu.common.web;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.FieldDefaults;

@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class JsonResult {
    /**
     * 状态码
     */
    Integer code;
    /**
     * 提示信息
     */
    String msg;
    /**
     * 统一返回结果
     */
    Object data;

    /**
     * 操作成功返回值
     */
    public static JsonResult ok(){
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(ServiceCodeEnum.SUCCESS.getCode());
        jsonResult.setMsg("操作成功！");
        jsonResult.setData(null);
        return jsonResult;
    }
    public static JsonResult ok(Object data){
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(ServiceCodeEnum.SUCCESS.getCode());
        jsonResult.setMsg("操作成功！");
        jsonResult.setData(data);
        return jsonResult;
    }

    /**
     * 操作失败返回值
     * @param msg 异常信息
     * @return JsonResult
     */
    public static JsonResult fail(String msg){
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(ServiceCodeEnum.FAIL.getCode());
        jsonResult.setMsg(msg);
        jsonResult.setData(null);
        return jsonResult;
    }

    /**
     * 操作失败返回值
     * @param serviceCodeEnum 服务端返回状态码
     * @param message 异常信息
     * @return JsonResult
     */
    public static JsonResult fail(ServiceCodeEnum serviceCodeEnum,String message){
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(serviceCodeEnum.getCode());
        jsonResult.setMsg(message);
        return jsonResult;
    }

    /**
     * 操作失败返回值
     * @param serviceCode 服务端返回状态码
     * @param message 异常信息
     * @return JsonResult
     */
    public static JsonResult fail(Integer serviceCode,String message){
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(serviceCode);
        jsonResult.setMsg(message);
        return jsonResult;
    }
}
